﻿
namespace RestaurantBooker.Web.Data
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Linq;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies BookerMetadata as the class
    // that carries additional metadata for the Booker class.
    [MetadataTypeAttribute(typeof(Booker.BookerMetadata))]
    public partial class Booker
    {

        // This class allows you to attach custom attributes to properties
        // of the Booker class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class BookerMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private BookerMetadata()
            {
            }

            public int booker_id { get; set; }

            public string booker_login { get; set; }

            public string booker_name { get; set; }

            public string booker_password { get; set; }

            public bool is_admin { get; set; }

            [Include]
            public Restaurant Restaurant { get; set; }

            public Nullable<int> restaurant_id { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CustomerMetadata as the class
    // that carries additional metadata for the Customer class.
    [MetadataTypeAttribute(typeof(Customer.CustomerMetadata))]
    public partial class Customer
    {

        // This class allows you to attach custom attributes to properties
        // of the Customer class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CustomerMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CustomerMetadata()
            {
            }

            public int customer_id { get; set; }

            public string customer_name { get; set; }

            public EntitySet<Order> Orders { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies DishMetadata as the class
    // that carries additional metadata for the Dish class.
    [MetadataTypeAttribute(typeof(Dish.DishMetadata))]
    public partial class Dish
    {

        // This class allows you to attach custom attributes to properties
        // of the Dish class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class DishMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private DishMetadata()
            {
            }

            public string dish_comments { get; set; }

            public Nullable<int> dish_cook_time { get; set; }

            public int dish_id { get; set; }

            public string dish_name { get; set; }

            public Binary dish_picture { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies OrderMetadata as the class
    // that carries additional metadata for the Order class.
    [MetadataTypeAttribute(typeof(Order.OrderMetadata))]
    public partial class Order
    {

        // This class allows you to attach custom attributes to properties
        // of the Order class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class OrderMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private OrderMetadata()
            {
            }

            public Customer Customer { get; set; }

            public int customer_id { get; set; }

            public string order_comments { get; set; }

            public int order_duration { get; set; }

            public int order_id { get; set; }

            public int order_person_count { get; set; }

            public DateTime order_start_time { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies RestaurantMetadata as the class
    // that carries additional metadata for the Restaurant class.
    [MetadataTypeAttribute(typeof(Restaurant.RestaurantMetadata))]
    public partial class Restaurant
    {

        // This class allows you to attach custom attributes to properties
        // of the Restaurant class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class RestaurantMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private RestaurantMetadata()
            {
            }

            public EntitySet<Booker> Bookers { get; set; }

            public int restaurant_id { get; set; }

            public string restaurant_name { get; set; }

            [Include]
            public EntitySet<Room> Rooms { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies RoomMetadata as the class
    // that carries additional metadata for the Room class.
    [MetadataTypeAttribute(typeof(Room.RoomMetadata))]
    public partial class Room
    {

        // This class allows you to attach custom attributes to properties
        // of the Room class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class RoomMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private RoomMetadata()
            {
            }

            public Restaurant Restaurant { get; set; }

            public int restaurant_id { get; set; }

            public Binary room_background { get; set; }

            public int room_id { get; set; }

            public string room_name { get; set; }

            public EntitySet<Room_Table> Room_Tables { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies Room_TableMetadata as the class
    // that carries additional metadata for the Room_Table class.
    [MetadataTypeAttribute(typeof(Room_Table.Room_TableMetadata))]
    public partial class Room_Table
    {

        // This class allows you to attach custom attributes to properties
        // of the Room_Table class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class Room_TableMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private Room_TableMetadata()
            {
            }

            public Room Room { get; set; }

            public int room_id { get; set; }

            public int room_table_height { get; set; }

            public int room_table_id { get; set; }

            public string room_table_name { get; set; }

            public int room_table_width { get; set; }

            public int room_table_x { get; set; }

            public int room_table_y { get; set; }
            
            [IncludeAttribute]
            public EntitySet<Table_Place> Table_Places { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies Table_PlaceMetadata as the class
    // that carries additional metadata for the Table_Place class.
    [MetadataTypeAttribute(typeof(Table_Place.Table_PlaceMetadata))]
    public partial class Table_Place
    {

        // This class allows you to attach custom attributes to properties
        // of the Table_Place class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class Table_PlaceMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private Table_PlaceMetadata()
            {
            }

            public Room_Table Room_Table { get; set; }

            public Nullable<int> room_table_id { get; set; }

            public int table_place_height { get; set; }

            public int table_place_id { get; set; }

            public string table_place_name { get; set; }

            public int table_place_width { get; set; }

            public int table_place_x { get; set; }

            public int table_place_y { get; set; }
        }
    }
}
